﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace server.app.table
{
    public class Star : Table<comm.objst.TableStar>
    {
        public const string TABLE_SPACE = Conf.TABLE_NAME_PREFIX + "Space";

        public int AllStarCount { get { return Orm.Count(); } }
        public int AllSpaceCount { get { return _tableSpace.Orm.Count(); } }

        Table<comm.objst.TableSpace> _tableSpace = null;

        public Star(World world)
            : base(Conf.TABLE_NAME_PREFIX + typeof(Star).Name, world)
        {
            _tableSpace = new Table<comm.objst.TableSpace>(TABLE_SPACE, _world);
        }

        public void UpdateStat(string starId, uint heroCount = 0)
        {
            _world.DataManager.Call(sqlx =>
            {
                var star = Orm.GetObjectByKey(starId);
                if (star != null)
                {
                    star.HeroCount += (int)heroCount;
                    Orm.Update(star);
                }
            });
        }

        public bool CreateStar(SQLx sqlx, comm.objst.TableStar tableStar)
        {
            return Orm.Insert(sqlx, tableStar);
        }
        public comm.objst.TableStar GetStar(string starId)
        {
            return Orm.GetObjectByKey(starId);
        }
        public bool UpdateStar(comm.objst.TableStar tableStar)
        {
            return Orm.Update(tableStar);
        }

        public bool CreateSpace(SQLx sqlx, comm.objst.TableSpace tableSpace)
        {
            return _tableSpace.Orm.Insert(sqlx, tableSpace);
        }
        public bool UpdateSpace(comm.objst.TableSpace tableSpace)
        {
            return _tableSpace.Orm.Update(tableSpace);
        }
        public comm.objst.TableSpace GetSpace(string spaceId)
        {
            return _tableSpace.Orm.GetObjectByKey(spaceId);
        }

        public override string CreateTableSql()
        {
            return base.CreateTableSql() +
                _tableSpace.Orm.CreateTableSql();
        }
    }
}
